interface SpuType {
    id?: number;
    spuName: string;
    description: string;
    category3Id: number;
    tmId: number | undefined;
    spuSaleAttrList: SpuSaleAttrType[];
    spuImageList: SpuImageType[];
}

interface SpuImageType {
    id?: number;
    spuId?: number;
    imgUrl: string;
    imgName: string;
}

interface SpuSaleAttrValueType {
    id?: number;
    spuId?: number;
    baseSaleAttrId: number;
    saleAttrValueName: string;
    saleAttrName: string;
    isChecked: null;
}

interface SpuSaleAttrType {
    id?: number;
    spuId?: number;
    baseSaleAttrId: number;
    saleAttrName: string;
    selectedSpuSaleAttrValueId?: number;
    spuSaleAttrValueList: SpuSaleAttrValueType[];
    flag?: boolean;
}

interface BaseSaleAttrType {
    id: number;
    name: string;
}

interface SkuAttrValueType {
    id?: number;
    skuId?: number;
    attrId: number;
    attrName?: string;
    valueId: number;
    valueName?: string;
}

interface SkuImageType {
    id?: number;
    skuId?: number;
    imgName: string;
    imgUrl: string;
    isDefault: string;
    spuImgId: 0;
}

interface SkuSaleAttrValueType {
    id?: number;
    skuId?: number;
    spuId?: number;
    saleAttrId: number;
    saleAttrValueId: number;
    saleAttrValueName?: string;
    saleAttrName?: string;
}

interface SkuType {
    id?: number;
    category3Id: number | undefined;
    isSale: number | undefined;
    price: number | undefined;
    spuId: number | undefined;
    tmId: number | undefined;
    skuDefaultImg: string;
    weight: string;
    skuDesc: string;
    skuName: string;
    skuAttrValueList: SkuAttrValueType[];
    skuImageList: SkuImageType[];
    skuSaleAttrValueList: SkuSaleAttrValueType[];
}

export type {
    SpuType, SpuImageType, SpuSaleAttrType, BaseSaleAttrType, SpuSaleAttrValueType, SkuType
}